#include <string.h>

#include "usart.h"
#include "delay.h"

#include "SYN6288.h"

 
// Music:选择背景音乐。0:无背景音乐，1~15：选择背景音乐
void SYN_FrameInfo(u8 *HZdata)
{
  /****************需要发送的文本**********************************/
  unsigned char Frame_Info[100];
  unsigned char HZ_Length;
  unsigned char ecc = 0; // 定义校验字节
  unsigned int i = 0;
  HZ_Length = strlen((char *)HZdata); // 需要发送文本的长度

  /*****************帧固定配置信息**************************************/
  Frame_Info[0] = 0xFD;          // 构造帧头FD
  Frame_Info[1] = 0x00;          // 构造数据区长度的高字节
  Frame_Info[2] = HZ_Length + 3; // 构造数据区长度的低字节
  Frame_Info[3] = 0x01;          // 构造命令字：合成播放命令
  Frame_Info[4] = 0x01 | 0 << 4; // 构造命令参数

  /*******************校验码计算***************************************/
  for (i = 0; i < 5; i++) // 依次发送构造好的5个帧头字节
  {
    ecc = ecc ^ (Frame_Info[i]); // 对发送的字节进行异或校验
  }

  for (i = 0; i < HZ_Length; i++) // 依次发送待合成的文本数据
  {
    ecc = ecc ^ (HZdata[i]); // 对发送的字节进行异或校验
  }
  /*******************发送帧信息***************************************/
  memcpy(&Frame_Info[5], HZdata, HZ_Length);
  Frame_Info[5 + HZ_Length] = ecc;
  USARTx_SendString(USART1, Frame_Info, 5 + HZ_Length + 1);
}

void YS_SYN_Set(u8 *Info_data)
{
  u8 Com_Len;
  Com_Len = strlen((char *)Info_data);
  USARTx_SendString(USART1, Info_data, Com_Len);
}

void Speech(void)
{
  unsigned char FrameInfo[21];
  FrameInfo[0] = 0xFD;
  FrameInfo[1] = 0x00;
  FrameInfo[2] = 0x12;
  FrameInfo[3] = 0x01;
  FrameInfo[4] = 0x00;
  FrameInfo[5] = 0xB3;
  FrameInfo[6] = 0xD4;
  FrameInfo[7] = 0xB7;
  FrameInfo[8] = 0xB9;
  FrameInfo[9] = 0xC1;
  FrameInfo[10] = 0xCB;
  FrameInfo[11] = 0xA3;
  FrameInfo[12] = 0xAC;
  FrameInfo[13] = 0xB3;
  FrameInfo[14] = 0xD4;
  FrameInfo[15] = 0xB7;
  FrameInfo[16] = 0xB9;
  FrameInfo[17] = 0xC1;
  FrameInfo[18] = 0xCB;
  FrameInfo[19] = 0x20;
  FrameInfo[20] = 0xC1;
  USARTx_SendString(USART1, FrameInfo, 21);
}
